The present disclosure generally relates to computer memory management, and more particularly relates to cache memory management.
Memory management, and particularly caching, is used to improve performance in a wide variety of computer systems. The basic idea of caching is to replicate data in a cache memory that is close to a client processor so that the client does not have to fetch cached data objects from, or store cached data objects to, a remote memory location, such as from-to a separate processing node in a multiprocessor computer system, or from-to a persistent storage memory, or the like, for which the overhead cost to access, or to store, the data would be high.
In some computer systems, cache memory is shared between two or more processes. Shared memory caches often are not large enough to store all of the data that would benefit from caching. Determining what data should be stored in the shared cache memory and what data should be removed from the shared cache memory (also referred to as cache replacement), have not been considered in this type of shared cache memory context. For example, when a data object is needed by a process running on a processor during intensive processing, if the data object is not available in local cache memory it creates inefficiency in trying to access the data object from a remote memory location. As this type of shared cache memory management becomes prevalent in modern computer system designs it will create an increasing problem to maintain and improve overall performance efficiency.